package com.carol.lmsbe.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.carol.lmsbe.dto.ConsumableConsumptionDTO;
import com.carol.lmsbe.dto.ConsumableReceiveCreateRequest;
import com.carol.lmsbe.dto.ConsumableReceiveDTO;
import com.carol.lmsbe.dto.ConsumableReceiveQueryRequest;

/**
 * 易耗品领用服务接口
 */
public interface ConsumableReceiveService {

    /**
     * 分页查询易耗品领用记录
     */
    Page<ConsumableReceiveDTO> listReceives(ConsumableReceiveQueryRequest request);

    /**
     * 根据ID获取易耗品领用记录详情
     */
    ConsumableReceiveDTO getReceiveById(Long id);

    /**
     * 创建易耗品领用记录
     */
    ConsumableReceiveDTO createReceive(ConsumableReceiveCreateRequest request);

    /**
     * 更新易耗品领用记录
     */
    ConsumableReceiveDTO updateReceive(Long id, ConsumableReceiveCreateRequest request);

    /**
     * 删除易耗品领用记录
     */
    void deleteReceive(Long id);

    /**
     * 审批易耗品领用申请
     */
    void approveReceive(Long id, String status, String comment);

    /**
     * 获取我的易耗品领用记录
     */
    Page<ConsumableReceiveDTO> getMyReceives(ConsumableReceiveQueryRequest request);

    /**
     * 获取未购买物品列表
     */
    Page<ConsumableReceiveDTO> getUnpurchasedItems(ConsumableReceiveQueryRequest request);

    /**
     * 获取消耗情况统计
     */
    Page<ConsumableReceiveDTO> getConsumptionStatistics(ConsumableReceiveQueryRequest request);

    /**
     * 获取消耗查询数据（包含计划vs实际对比）
     */
    Page<ConsumableConsumptionDTO> getConsumptionQuery(ConsumableReceiveQueryRequest request);
}
